﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DAL;
using BLL;
using NLog;
using DevExpress.XtraReports.UI;
using Entities;

namespace QLTTTH
{
    public partial class UCHocVien : DevExpress.XtraEditors.XtraUserControl
    {
        protected static Logger logger = LogManager.GetCurrentClassLogger();
        public UCHocVien()
        {
            InitializeComponent();
        }

        private void UCHocVien_Load(object sender, EventArgs e)
        {
            LoadDsHocVien();
        }
        private void Log(ActionResult aResult)
        {
            foreach (var ex in aResult.Exceptions)
            {
                logger.Error(ex);
            }
        }
        private void LoadDsHocVien()
        {
            var aResult = HocVienManager.LayDanhSachHocVien();
            if (aResult.Success)
                dgvDanhSach.DataSource = aResult.Result;
            else
                Log(aResult);
        }

        private void btnChiTiet_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xem chi tiết học viên.");
            var frm = new frmThongTinHocVien();
            frm.FillControl(GetHocVienListView());
            frm.ShowDialog();
        }
        private HocVien GetHocVienListView()
        {
            var hv = new HocVien();
            hv.MaHV = int.Parse(grvHocVien.GetFocusedRowCellValue("MaHV").ToString());
            hv.HoTen = grvHocVien.GetFocusedRowCellValue("HoTen").ToString();
            hv.GioiTinh = grvHocVien.GetFocusedRowCellValue("GioiTinh").ToString();
            hv.NgaySinh = DateTime.Parse(grvHocVien.GetFocusedRowCellValue("NgaySinh").ToString());
            hv.DiaChi = grvHocVien.GetFocusedRowCellValue("DiaChi").ToString();
            hv.Email = grvHocVien.GetFocusedRowCellValue("Email").ToString();
            hv.SoDT = grvHocVien.GetFocusedRowCellValue("SoDT").ToString();
            hv.NgheNghiep = grvHocVien.GetFocusedRowCellValue("NgheNghiep").ToString();

            return hv;
        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng tìm kiếm học viên.");
            grvHocVien.ShowFindPanel();
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng xóa học viên");

            if (XtraMessageBox.Show("Bạn có muốn xóa học viên này", "Thông báo", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
            {
                int maHV;

                for (int i = 0; i < grvHocVien.RowCount; i++)
                {
                    if (grvHocVien.IsRowSelected(i))
                    {
                        maHV = int.Parse(grvHocVien.GetRowCellDisplayText(i, "MaHV").ToString());
                        var aResult = HocVienManager.XoaHocVien(maHV);
                        if (!aResult.Success)
                        {
                            Log(aResult);
                            XtraMessageBox.Show("Xóa học viên không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                            return;
                        }
                    }
                }
                XtraMessageBox.Show("Xóa học viên thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvHocVien.DeleteSelectedRows();
            }
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {

            logger.Info("Chọn chức năng thêm học viên.");
            var frm = new frmThongTinHocVien();
            frm.sendData = new frmThongTinHocVien.SendData(ThemHocVien);
            frm.BatNutLuu();
            frm.ShowDialog();
        }
        private void ThemHocVien(HocVien hv)
        {
            var aResult = HocVienManager.ThemHocVien(hv);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Thêm học viên thành công.");
                LoadDsHocVien();
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Thêm học viên không thành công.");
            }
           
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            logger.Info("Chọn chức năng cập nhật học viên.");
            var frm = new frmThongTinHocVien();
            frm.FillControl(GetHocVienListView());
            frm.sendData = new frmThongTinHocVien.SendData(CapNhatHocVien);
            frm.BatNutLuu();
            frm.ShowDialog();
        }

        private void CapNhatHocVien(HocVien hv)
        {
             var aResult = HocVienManager.CapNhatHocVien(hv);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Cập nhật thông tin học viên thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                grvHocVien.SetFocusedRowCellValue("HoTen", hv.HoTen);
                grvHocVien.SetFocusedRowCellValue("GioiTinh", hv.GioiTinh);
                grvHocVien.SetFocusedRowCellValue("NgaySinh", hv.NgaySinh);
                grvHocVien.SetFocusedRowCellValue("DiaChi", hv.DiaChi);
                grvHocVien.SetFocusedRowCellValue("Email", hv.Email);
                grvHocVien.SetFocusedRowCellValue("SoDT", hv.SoDT);
                grvHocVien.SetFocusedRowCellValue("NgheNghiep", hv.NgheNghiep);
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Cập nhật thông tin học viên không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }

        private void btnIn_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            RptHocVien rpt = new RptHocVien();
            QLTTTHEntities content = new QLTTTHEntities();
            List<HocVien> hvien = content.HocViens.ToList();
            rpt.DataSource = hvien;
            ReportPrintTool tool = new ReportPrintTool(rpt);
            tool.ShowPreview();
        }

        private void nvaDangKi_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            var frm = new frmDangKi();
            frm.sendData = new frmDangKi.SendData(ThemDangKi);
            frm.BatNutLuu();
            frm.ShowDialog();
        }
        private void ThemDangKi(DangKy dk)
        {
            var aResult = DangKiManager.ThemDangKi(dk);
            if (aResult.Success)
            {
                XtraMessageBox.Show("Thêm đăng kí mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            else
            {
                Log(aResult);
                XtraMessageBox.Show("Thêm đăng kí mới không thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

    }
}
